package com.example.springboot_jap_model.service;

import com.example.springboot_jap_model.domain.Authority;
import com.example.springboot_jap_model.domain.RespEntity;
import com.example.springboot_jap_model.domain.User;
import com.example.springboot_jap_model.domain.UserAndRole;

import java.util.List;


public interface UserService {

    /**
     * 添加用户
     * 1.校验是否存在
     * 2.保存成功与否 看返回值
     *
     * @param user
     * @return
     */
    RespEntity addUser(User user);

    /**
     * 登录操作
     *
     * @param user
     * @return
     */
    RespEntity doLogin(User user);

    /**
     * 登出操作
     */
    RespEntity doLogOut();

    /**
     * 获取用户
     *
     * @return
     */
    List<User> findUserByStatus(Integer status);

    /**
     * 新增 权限
     * 1.将老的权限删除
     * 2.
     *
     * @param authId 为ID 串 格式 1-2-3-4-5-
     * @return
     */
    RespEntity updateAuto(String authId);

    List findAutoByUserIdAndUrl(Long userId, String url);

    /**
     * 查询权限 是否存在
     *
     * @param url
     * @return
     */
    List<Authority> findAllAuthByUrl(String url);

    /**
     * 查询所有权限
     *
     * @param
     * @return
     */
    List<Authority> findAllAuth();

    /**
     * 添加权限
     * 1.管理员 才能添加
     * 2.添加时候是否存在
     * 3.根据url 查询
     * 存在 则 更新
     * 不存在 添加
     *
     * @param authority
     * @return
     */
    RespEntity addAuth(Authority authority);

    /**
     * 权限分配
     * 1.管理员 权限
     *
     * @param
     * @return
     */
    RespEntity distributionAuth();

    RespEntity findByTypeAndStatus(Integer type,Integer status,int pagenum);

}
